home *** CD-ROM | disk | FTP | other *** search
- from test_support import TestFailed
- import marshal
- import sys
-
- # XXX Much more needed here.
-
- # Test the full range of Python ints.
- n = sys.maxint
- while n:
- for expected in (-n, n):
- s = marshal.dumps(expected)
- got = marshal.loads(s)
- if expected != got:
- raise TestFailed("for int %d, marshal string is %r, loaded "
- "back as %d" % (expected, s, got))
- n = n >> 1
-
- # Simulate int marshaling on a 64-bit box. This is most interesting if
- # we're running the test on a 32-bit box, of course.
-
- def to_little_endian_string(value, nbytes):
- bytes = []
- for i in range(nbytes):
- bytes.append(chr(value & 0xff))
- value >>= 8
- return ''.join(bytes)
-
- maxint64 = (1L << 63) - 1
- minint64 = -maxint64-1
-
- for base in maxint64, minint64, -maxint64, -(minint64 >> 1):
- while base:
- s = 'I' + to_little_endian_string(base, 8)
- got = marshal.loads(s)
- if base != got:
- raise TestFailed("for int %d, simulated marshal string is %r, "
- "loaded back as %d" % (base, s, got))
- if base == -1: # a fixed-point for shifting right 1
- base = 0
- else:
- base >>= 1
-
- # Simple-minded check for SF 588452: Debug build crashes
- marshal.dumps([128] * 1000)
-